<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文章列表</title>
    <link rel="stylesheet" href="js/bootstrap/css/bootstrap.min.css">
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/iconfont.css">
    <link rel="stylesheet" href="css/main.css">
    <script src="js/jquery-1.12.4.min.js"></script>
    <script src="js/bootstrap/js/bootstrap.min.js"></script>
    <!-- 引入模板引擎js文件 -->
    <script src="./js/template-web.js"></script>
</head>

<body>
    <div class="container-fluid">
        <div class="common_title">
            文章类别管理
        </div>
        <div class="container-fluid common_con">
            <table class="table table-striped table-bordered table-hover mp20 category_table">
                <thead>
                    <tr>
                        <th>名称</th>
                        <th>Slug</th>
                        <th class="text-center" width="100">操作</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>未分类</td>
                        <td>uncategorized</td>
                        <td class="text-center">
                            <a href="javascript:editTr({&quot;id&quot;:&quot;1&quot;,&quot;slug&quot;:&quot;uncategorized&quot;,&quot;name&quot;:&quot;未分类&quot;});"
                                class="btn btn-info btn-xs">编辑</a>
                            <a href="javascript:deleteTr( 1 );" class="btn btn-danger btn-xs">删除</a>
                        </td>
                    </tr>

                    <tr>
                        <td>奇趣事</td>
                        <td>funny</td>
                        <td class="text-center">
                            <a href="javascript:editTr({&quot;id&quot;:&quot;2&quot;,&quot;slug&quot;:&quot;funny&quot;,&quot;name&quot;:&quot;奇趣事&quot;});"
                                class="btn btn-info btn-xs">编辑</a>
                            <a href="javascript:deleteTr( 2 );" class="btn btn-danger btn-xs">删除</a>
                        </td>
                    </tr>

                    <tr>
                        <td>会生活</td>
                        <td>living</td>
                        <td class="text-center">
                            <a href="javascript:editTr({&quot;id&quot;:&quot;3&quot;,&quot;slug&quot;:&quot;living&quot;,&quot;name&quot;:&quot;会生活&quot;});"
                                class="btn btn-info btn-xs">编辑</a>
                            <a href="javascript:deleteTr( 3 );" class="btn btn-danger btn-xs">删除</a>
                        </td>
                    </tr>

                    <tr>
                        <td>爱旅行</td>
                        <td>travel</td>
                        <td class="text-center">
                            <a href="javascript:editTr({&quot;id&quot;:&quot;4&quot;,&quot;slug&quot;:&quot;travel&quot;,&quot;name&quot;:&quot;爱旅行&quot;});"
                                class="btn btn-info btn-xs">编辑</a>
                            <a href="javascript:deleteTr( 4 );" class="btn btn-danger btn-xs">删除</a>
                        </td>
                    </tr>
                </tbody>
                <tfoot>
                    <tr>
                        <td colspan="3" class="text-center">
                            <a href="#" class="btn btn-success" id="xinzengfenlei" data-toggle="modal"
                                data-target="#addModal">新增分类</a>
                        </td>
                    </tr>
                </tfoot>
            </table>
        </div>
    </div>

    <!-- 模态框 -->
    <div class="modal fade" id="addModal">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"></button>
                    <h4 class="modal-title">新增分类</h4>
                </div>
                <div class="modal-body">
                    <form>
                        <!-- 用一个文本框来保存当前编辑的 分类id -->
                        <!-- <input type="text" style="display: none" name="" id="recipient-id"> -->
                        <!-- 隐藏域 特性:默认就是隐藏的 -->
                        <input type="hidden"  name="id" id="recipient-id">
                        <div class="form-group">
                            <label for="recipient-name" class="control-label">分类名称:</label>
                            <input type="text" name="name" class="form-control" id="recipient-name">
                        </div>
                        <div class="form-group">
                            <label for="message-text" class="control-label">分类别名:</label>
                            <input type="text" name="slug" class="form-control" id="recipient-slug">
                        </div>
                    </form>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" id="model_shutoff">关闭</button>
                    <button type="button" class="btn btn-primary" id="model_add">新增</button>
                </div>
            </div>
        </div>
    </div>

    <script>
        $('#addModal').modal({
            show: false,
            backdrop: false
        });

        $('#model_shutoff').click(function () {
            alert('shutoff');
            $('#addModal').modal('hide');
        });
    </script>

    <!-- 准备一个模板 -->
    <script id="cate_list" type="text/html">
        {{each data v}}
        <tr>
            <td>{{v.name}}</td>
            <td>{{v.slug}}</td>
            <td class="text-center">
                <a href="#" data-id="{{v.id}}" class="btn btn-info btn-xs">编辑</a>
                <a href="#" data-id="{{v.id}}" class="btn btn-danger btn-xs btn-delete">删除</a>
            </td>
        </tr>
        {{/each}}
    </script>
    <script>
        // 入口函数
        $(function () {
            //把获取所有文章分类并渲染到页面这个代码封装成一个函数
            function getData() {
                //1.一进到页面发送ajax请求,获取所有的文章分类信息.
                $.ajax({
                    type: 'get',
                    url: 'http://localhost:80/api/v1/admin/category/list',
                    success: function (backData) {
                        console.log(backData);
                        if (backData.code == 200) {
                            //2.通过模板引擎渲染到页面上.
                            var resHtml = template('cate_list', backData);
                            $('tbody').html(resHtml);
                        }
                    }
                });
            }
            //需求: 一进到页面显示所有的文章类别.
            getData();

            //需求: 给模态框中的 新增/修改 按钮设置点击事件.完成新增/修改
            $('#model_add').on('click', function () {
                //判断一些你点的到底是新增还是修改.
                //(可以用当前点击时候显示的文本判断,也可以用是否拥有btn-success那个类来判断.)
                if ($(this).hasClass('btn-success')) {
                    //点击的修改
                    //获取用户修改后的分类名和分类别名, 还有当前要修改的分类id
                    // var cateId = $('#recipient-id').val().trim();//分类id
                    // var cateName = $('#recipient-name').val().trim(); //分类名
                    // var cateSlug = $('#recipient-slug').val().trim(); //分类别名
                    // console.log(cateId,cateName,cateSlug);
                    //如果上面获取值得代码不是三句,而是三十句,那写起来就有些恶心了.
                    //因为上面获取值得标签都在form表单中,所以那我们就可以使用formData来一次性的获取他们的值了.
                    //但是使用formData有个前提条件, 后端必须要接收.
                    //那我们这个编辑接口,后端没有用formData接收.
                    //那怎么办,难道真的要我们一个个的去写三十句这样获取值得代码吗?
                    //不用,贴心的jQuery为我们提供了一个serialize()这个方法.
                    //这个方法可以获取form表单里面带有name属性的标签的值. 
                    //获取的值会变成key=value&ke2=value2这种格式的字符串
                    var data = $('form').serialize()
                    console.log(data);
                    
                    //发送ajax请求,完成修改
                    $.ajax({
                        type:'post',
                        url:'http://localhost:80/api/v1/admin/category/edit',
                        // data:{
                        //     id:cateId,
                        //     name:cateName,
                        //     slug:cateSlug
                        // },
                        data:data,
                        success:function(backData){
                            if(backData.code == 200){
                                //修改成功后,重新加载新数据显示.
                                getData();
                            }
                        }
                    });
                } else {
                    //点击的新增
                    //新增逻辑
                    //获取一下用户要新增的 分类名和分类别名.
                    var cateName = $('#recipient-name').val().trim(); //分类名
                    var cateSlug = $('#recipient-slug').val().trim(); //分类别名
                    if (cateName == "" || cateSlug == "") {
                        alert('请输入分类别名或者分类名.');
                        return;
                    }
                    //发送ajax请求,完成
                    $.ajax({
                        type: 'post',
                        url: 'http://localhost:80/api/v1/admin/category/add',
                        data: {
                            name: cateName,
                            slug: cateSlug
                        },
                        success: function (backData) {
                            if (backData.code == 201) {
                                //重新渲染数据
                                getData();
                                //新增完成后,清空输入框
                                var cateName = $('#recipient-name').val("");
                                var cateSlug = $('#recipient-slug').val("");
                            }
                        }
                    });
                }
                //隐藏模态框
                $('#addModal').modal('hide');
            });


            //需求: 删除文章类别
            //1. 给删除按钮们设置点击事件.(委托注册)
            $('tbody').on('click', "a.btn-delete", function () {
                var _this = $(this); //把当前点击的这个a标签给存起来
                //2. 询问一下是否真的要删除
                if (confirm('你真的要删除吗?')) {
                    //3. 获取当前删除按钮身上存的id (data-id那个自定义属性保存的id)
                    var cateId = $(this).attr('data-id');
                    //console.log(cateId);
                    //4. 发送ajax请求,完成删除
                    $.ajax({
                        type: 'post',
                        url: 'http://localhost:80/api/v1/admin/category/delete',
                        data: {
                            id: cateId
                        },
                        success: function (backData) {
                            if (backData.code == 204) {
                                // 重新渲染新的数据  
                                //getData();
                                //直接删除dom树中的这一行是可以的.
                                _this.parent().parent().remove();
                            }
                        }
                    });
                }
            })


            //需求: 给编辑按钮们注册点击事件.(委托注册)
            $('tbody').on('click', 'a.btn-info', function () {
                //把弹出来的模态框里面的样式修改一下(title,确认按钮的文本改成修改,修改背景色)
                $('#addModal .modal-title').html('修改分类');
                $('#model_add').text('修改').addClass('btn-success');

                //让弹出来的模态框里面的标签,显示要修改之前的内容.
                var cateId = $(this).attr('data-id'); //分类id
                var cateName = $(this).parent().prev().prev().text().trim();//分类名
                var cateSlug = $(this).parent().prev().text().trim(); //分类别名
                $('#recipient-id').val(cateId);
                $('#recipient-name').val(cateName);
                $('#recipient-slug').val(cateSlug);
                console.log(cateId);
                

                //让模态框显示
                $('#addModal').modal('show');
            })
            //需求: 点击新增分类 按钮, 修改弹出来的模态框中的样式
            $('#xinzengfenlei').on('click', function () {
                //把弹出来的模态框里面的样式修改一下(title,确认按钮的文本改成修改,修改背景色)
                $('#addModal .modal-title').html('新增分类');
                $('#model_add').text('新增').removeClass('btn-success');
                //让模态框显示
                //$('#addModal').modal('show');
            })

        });
    </script>
</body>

</html>